package collection.iter;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");

        // 获取迭代器
        Iterator<String> iterator = list.iterator();

        // 遍历集合
        System.out.println("使用迭代器遍历：");
        while (iterator.hasNext()) { // 判断是否有下一个元素
            String element = iterator.next(); // 获取下一个元素
            System.out.println(element);

            // 迭代过程中删除元素（安全方式）
            if (element.equals("B")) {
                iterator.remove(); // 只能删除最后一次next()返回的元素
            }
        }

        System.out.println("删除B后：" + list);

        // 增强for循环（内部使用迭代器）
        System.out.println("\n增强for循环遍历：");
        for (String element : list) {
            System.out.println(element);
            // 注意：增强for循环中不能修改集合结构（会抛出ConcurrentModificationException）
            // list.remove(element); // 错误
        }
    }
}
